//入口文件
import Vue from 'vue'

//导入路由模块
import VueRouter from 'vue-router'
Vue.use(VueRouter)

import  Vuex from 'vuex'
Vue.use(Vuex)


//导入格式化时间的插件
import moment from 'moment'
Vue.filter('dateFormat',(dateStr,pattern="YYYY-MM-DD hh:mm:ss") => {
    return moment(dateStr).format(pattern)
});

import axios from 'axios'
Vue.prototype.axios = axios
axios.defaults.baseURL = "http://www.liulongbin.top:3005";
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';

//导入自己的router.js 路由模块
import router from "./router.js"

//按需导入Mint-UI
/*import { Header,Swipe, SwipeItem,Button,Lazyload } from 'mint-ui';
Vue.component(Header.name, Header);
Vue.component(Swipe.name, Swipe);
Vue.component(SwipeItem.name, SwipeItem);
Vue.component(Button.name, Button);
Vue.use(Lazyload);*/

//全部导入Mint-UI
import MintUI from 'mint-ui'
import 'mint-ui/lib/style.css'
Vue.use(MintUI)

//安装图片预览插件
import VuePreview from 'vue-preview'
Vue.use(VuePreview)

//导入mui的样式库
import './lib/mui/css/mui.min.css'
import './lib/mui/css/icons-extra.css'

var cart = JSON.parse(localStorage.getItem('cart') || '[]')
const store = new Vuex.Store({
    state:{
        cart:cart//已选中的商品信息
    },
    mutations:{
        AddGoodsInfo(state,selectedInfo){//点击加入购物车，把已选中的商品信息添加到state中
            var flag = false;

            state.cart.some(item => {
                if(item.id == selectedInfo.id){
                    item.count += parseInt(selectedInfo.count);
                    flag=true;
                    return true;
                }
            })

            if(!flag){
                state.cart.push(selectedInfo)
            }
            //当更新cart数组后，把该数组存储到本地localStorage中去
            localStorage.setItem('cart',JSON.stringify(state.cart));
        },
        updateGoodsCount(state,updategoods){//在购物车页面改变商品数量时，用最新的count值覆盖掉原先的count值
            state.cart.some(item => {
                if(item.id == updategoods.id){
                    item.count = parseInt(updategoods.count)
                    return true;
                }
            })
            //当修改完商品的数量，把最新的数量存储到本地localStorage中去
            localStorage.setItem('cart',JSON.stringify(state.cart));
        },
        delGoodsInfo(state,goodsid){//根据id从cart中删除对应的商品
            state.cart.some((item,i) => {
                if(item.id == goodsid){
                    state.cart.splice(i,1);
                    return true;
                }
            })

            //当修改完商品的数量，把最新的数量存储到本地localStorage中去
            localStorage.setItem('cart',JSON.stringify(state.cart));
        },
        updateGoodsSelected(state,info){//更新cart中的selected属性（商品是否选中的状态）
            state.cart.some((item) => {
                if(item.id == info.id){
                    item.selected = info.value;
                    return true;
                }
            })

            //当修改完商品的是否选中的状态，把最新的数量存储到本地localStorage中去
            localStorage.setItem('cart',JSON.stringify(state.cart));
        }

    },
    getters:{
        getCartCount(state){//获取购物车的总数量
            var sum = 0;
            state.cart.forEach(item => {
                sum += item.count;
            })
            return sum;
        },
        getGoodsCount(state){//获取cart中每件商品的数量到购物车页面
            var o = {};
            state.cart.forEach(item => {
                o[item.id] = item.count;
            })
            return o;
        },
        getGoodsSelected(state){//获取cart中每件商品的selected值
            var o = {};
            state.cart.forEach(item => {
                o[item.id] = item.selected;
            })
            return o;
        },
        getGoodsCountAndAmount(state){//获取商品的数量和总价
            var o ={
                count:0,//数量
                amount:0//总价
            };
            state.cart.forEach(item=>{
                if(item.selected){
                    o.count += item.count;
                    o.amount += item.price * item.count;
                }
            })
            return o;
        }
    }

})



import app from './App.vue'

var vm = new Vue({
    el:"#app",
    render:c=>c(app),
    router,
    store
})